/*package DAO;

import AccesoBD.AccesoBaseDatos;
import Dominio.AsignaturaOfertaAcademica;
import Dominio.AsignaturaOfertaAcademicaPonderada;
import Dominio.OfertaAcademica;
import java.sql.Connection;
import java.util.ArrayList;

public class DAOGeneracionHorarios {

    private AccesoBaseDatos acceso = new AccesoBaseDatos();
    private Connection conexion = null;
    private final int ESTADO_APROBADA = 0;
    private final int ESTADO_RECURSABLE = 1; 
    private final int ESTADO_NO_CURSABLE = 2;

    public DAOGeneracionHorarios() {
        conexion = acceso.abrirConexion();
    }

    public void generarOpcionesDeHorario(String nombreUsuario, int numeroAsignaturas) {
        int claveInfoAlumno = obtenerClaveInfoAlumno(nombreUsuario);
        int clavePE = obtenerClavePE(claveInfoAlumno);
        String claveOfertaAcademica = obtenerClaveOferta();
       
        ArrayList<AsignaturaOfertaAcademica> listaAsignaturasAprobadas = obtenerAsignaturasPorEstadoOfertada(claveOfertaAcademica, claveInfoAlumno, clavePE, ESTADO_APROBADA);
        ArrayList<AsignaturaOfertaAcademica> listaAsignaturasNoCursables = obtenerAsignaturasPorEstadoOfertada(claveOfertaAcademica, claveInfoAlumno, clavePE, ESTADO_NO_CURSABLE);
        ArrayList<AsignaturaOfertaAcademica> listaAsignaturasRecursables = obtenerAsignaturasPorEstadoOfertada(claveOfertaAcademica, claveInfoAlumno, clavePE, ESTADO_RECURSABLE);
        
        ArrayList<AsignaturaOfertaAcademica> listaAsignaturasCursables = obtenerAsignaturasCursables(claveOfertaAcademica, claveInfoAlumno, clavePE);
        
        ArrayList<AsignaturaOfertaAcademica> listaAsignaturasOptativasAprobadas = obtenerAsignaturasOptativasPorEstadoOfertada(claveOfertaAcademica, claveInfoAlumno, clavePE, ESTADO_APROBADA);
        ArrayList<AsignaturaOfertaAcademica> listaAsignaturasOptativasNoCursables = obtenerAsignaturasOptativasPorEstadoOfertada(claveOfertaAcademica, claveInfoAlumno, clavePE, ESTADO_NO_CURSABLE);
        ArrayList<AsignaturaOfertaAcademica> listaAsignaturasOptativasRecursables = obtenerAsignaturasOptativasPorEstadoOfertada(claveOfertaAcademica, claveInfoAlumno, clavePE, ESTADO_RECURSABLE);

        ArrayList<AsignaturaOfertaAcademicaPonderada> listaAsignaturasPonderadasRecursables = obtenerAsignaturasPonderadasRecursables(listaAsignaturasRecursables);
        ArrayList<AsignaturaOfertaAcademicaPonderada> listaAsignaturasPonderadasNormales = obtenerAsignaturasPonderadasNormales(listaAsignaturasCursables);
        //pendiente para mañana 
        //ArrayList<AsignaturaOfertaAcademicaPonderada> listaAsignaturasPonderadasOptativas = obtenerAsignaturasPonderadasOptativas(listaAsignaturasOptativas);
    
    }

    private ArrayList<AsignaturaOfertaAcademica> obtenerAsignaturasCursables(String claveOferta,int claveInfoAlumno, int clavePE){
    DAOAsignaturasAlumno daoAlumno = new DAOAsignaturasAlumno();
    ArrayList<AsignaturaOfertaAcademica> listaAsignaturasCursables = daoAlumno.obtenerAsignaturasCursablesOfertada(claveOferta, claveInfoAlumno, clavePE);
    return listaAsignaturasCursables;
    }
    private int obtenerClaveInfoAlumno(String nombreUsuario) {
        int clvInfoAlumno = 0;
        DAOInformacionAlumno infoAlumno = new DAOInformacionAlumno();
        clvInfoAlumno = infoAlumno.obtenerClaveInfoAlumno(nombreUsuario);
        infoAlumno.cerrarConexionADAOInformacionAlumno();
        return clvInfoAlumno;
    }

    private int obtenerClavePE(int claveInfoAlumno) {
        int clvPE = 0;
        DAORelacionAlumnoProgramaEducativo infoRelAlumnoPE = new DAORelacionAlumnoProgramaEducativo();
        clvPE = infoRelAlumnoPE.obtenerClavePE(claveInfoAlumno);
        infoRelAlumnoPE.cerrarConexionARelacionAlumnoProgramaEducativo();
        return clvPE;
    }

    private String obtenerClaveOferta() {
        String clvOfertaAcademica = null;
        DAOOfertaAcademica daoOfertaAcademica = new DAOOfertaAcademica();

        ArrayList<OfertaAcademica> listaDeOfertasAcademicas = daoOfertaAcademica.buscarTodasLasOfertas();

        if (!listaDeOfertasAcademicas.isEmpty()) {
            OfertaAcademica ofertaAcademica = listaDeOfertasAcademicas.get(0);
            clvOfertaAcademica = ofertaAcademica.getClaveOferta();
        }
        daoOfertaAcademica.cerrarConexionAOferta();
        return clvOfertaAcademica;
    }

    private ArrayList<AsignaturaOfertaAcademica> obtenerAsignaturasPorEstadoOfertada(String claveOferta, int claveInfoAlumno, int claveProgramaEducativo, int estado) {
        DAOAsignaturasAlumno daoAsignaturasAlumno = new DAOAsignaturasAlumno();
        ArrayList<AsignaturaOfertaAcademica> listaAsignaturasPorEstadoOfertada = daoAsignaturasAlumno.obtenerAsignaturasPorEstadoOfertada(claveOferta, claveInfoAlumno, claveProgramaEducativo, estado);

        return listaAsignaturasPorEstadoOfertada;
    }

    private ArrayList<AsignaturaOfertaAcademica> obtenerAsignaturasOptativasPorEstadoOfertada(String claveOferta, int claveInfoAlumno, int claveProgramaEducativo, int estado) {
        DAOAsignaturasOptativasAlumno daoAsignaturasOptativasAlumno = new DAOAsignaturasOptativasAlumno();
        ArrayList<AsignaturaOfertaAcademica> listaAsignaturasOptativasPorEstadoOfertada = daoAsignaturasOptativasAlumno.obtenerAsignaturasPorEstadoOfertada(claveOferta, claveInfoAlumno, claveProgramaEducativo, estado);

        return listaAsignaturasOptativasPorEstadoOfertada;
    }

    private ArrayList<AsignaturaOfertaAcademicaPonderada> obtenerAsignaturasPonderadasRecursables(ArrayList<AsignaturaOfertaAcademica> listaAsignaturasRecursables) {
        ArrayList<AsignaturaOfertaAcademicaPonderada> listaPonderadas = new ArrayList<AsignaturaOfertaAcademicaPonderada>();
        int ponderacionAsigRecursable = 15;
        for (int i = 0; i < listaAsignaturasRecursables.size(); i++) {
            AsignaturaOfertaAcademica asignaturaOfertaAcademica = listaAsignaturasRecursables.get(i);
            AsignaturaOfertaAcademicaPonderada asignaturaPonderada = new AsignaturaOfertaAcademicaPonderada();
            asignaturaPonderada.setAsignaturaOferta(asignaturaOfertaAcademica);
            asignaturaPonderada.setPonderacion(ponderacionAsigRecursable);
            listaPonderadas.add(asignaturaPonderada);
        }
        return listaPonderadas;
    }
    
    private ArrayList<AsignaturaOfertaAcademicaPonderada> obtenerAsignaturasPonderadasNormales(ArrayList<AsignaturaOfertaAcademica> listaAsignaturasNormales) {
        ArrayList<AsignaturaOfertaAcademicaPonderada> listaPonderadas = new ArrayList<AsignaturaOfertaAcademicaPonderada>();
        int ponderacionAsigNormal = 5;
        for (int i = 0; i < listaAsignaturasNormales.size(); i++) {
            AsignaturaOfertaAcademica asignaturaOfertaAcademica = listaAsignaturasNormales.get(i);
            AsignaturaOfertaAcademicaPonderada asignaturaPonderada = new AsignaturaOfertaAcademicaPonderada();
            asignaturaPonderada.setAsignaturaOferta(asignaturaOfertaAcademica);
            asignaturaPonderada.setPonderacion(ponderacionAsigNormal);
            listaPonderadas.add(asignaturaPonderada);
        }
        return listaPonderadas;
    }
    
     private ArrayList<AsignaturaOfertaAcademicaPonderada> obtenerAsignaturasPonderadasOptativas(ArrayList<AsignaturaOfertaAcademica> listaAsignaturasOptativas) {
        ArrayList<AsignaturaOfertaAcademicaPonderada> listaPonderadas = new ArrayList<AsignaturaOfertaAcademicaPonderada>();
        int ponderacionAsigOptativas = 2;
        for (int i = 0; i < listaAsignaturasOptativas.size(); i++) {
            AsignaturaOfertaAcademica asignaturaOfertaAcademica = listaAsignaturasOptativas.get(i);
            AsignaturaOfertaAcademicaPonderada asignaturaPonderada = new AsignaturaOfertaAcademicaPonderada();
            asignaturaPonderada.setAsignaturaOferta(asignaturaOfertaAcademica);
            asignaturaPonderada.setPonderacion(ponderacionAsigOptativas);
            listaPonderadas.add(asignaturaPonderada);
        }
        return listaPonderadas;
    }
     
     
}
*/